diff --git a/library/NGNPro/Records/DnsZones.php b/library/NGNPro/Records/DnsZones.php index 0432913..255d7e2 100644 --- a/library/NGNPro/Records/DnsZones.php +++ b/library/NGNPro/Records/DnsZones.php @@ -1,799 +1,863 @@ array('type'=>'integer', - 'help' => 'Zone owner') - ); - - var $Fields=array( - 'customer' => array('type'=>'integer', - 'help' => 'Zone owner' - ), - 'serial' => array('type'=>'integer', - 'help'=>'Serial number', - 'readonly' => 1 - ), - 'email' => array('type'=>'string', - 'help'=>'Administrator address' - ), - 'ttl' => array('type'=>'integer', - 'help'=>'Time to live of SOA record' - ), - 'minimum' => array('type'=>'integer', - 'help'=>'Default time to live period' - ), - 'retry' => array('type'=>'integer', - 'help'=>'Retry transfer period' - ), - 'expire' => array('type'=>'integer', - 'help'=>'Expire period' - ), - 'info' => array('type'=>'string', - 'help' =>'Zone description' - ) - ); + var $FieldsAdminOnly = array( + 'reseller' => array( + 'type'=>'integer', + 'help' => 'Zone owner' + ) + ); + + var $Fields = array( + 'customer' => array( + 'type' => 'integer', + 'help' => 'Zone owner' + ), + 'serial' => array( + 'type' => 'integer', + 'help' => 'Serial number', + 'readonly' => 1 + ), + 'email' => array( + 'type' => 'string', + 'help' => 'Administrator address' + ), + 'ttl' => array( + 'type' => 'integer', + 'help' => 'Time to live of SOA record' + ), + 'minimum' => array( + 'type' => 'integer', + 'help' => 'Default time to live period' + ), + 'retry' => array( + 'type' => 'integer', + 'help' => 'Retry transfer period' + ), + 'expire' => array( + 'type' => 'integer', + 'help' => 'Expire period' + ), + 'info' => array( + 'type' => 'string', + 'help' => 'Zone description' + ) + ); public function __construct($SoapEngine) { dprint("init DnsZones"); - $this->filters = array( - 'name' => trim($_REQUEST['name_filter']), - 'info' => trim($_REQUEST['info_filter']) -); + $this->filters = array( + 'name' => trim($_REQUEST['name_filter']), + 'info' => trim($_REQUEST['info_filter']) + ); parent::__construct($SoapEngine); - $this->sortElements=array('changeDate' => 'Change date', - 'name' => 'Name' + $this->sortElements = array( + 'changeDate' => 'Change date', + 'name' => 'Name' ); - $this->Fields['nameservers'] = array('type'=>'text', - 'name'=>'Name servers', - 'help'=>'Authoritative name servers' - ); - + $this->Fields['nameservers'] = array( + 'type'=>'text', + 'name'=>'Name servers', + 'help'=>'Authoritative name servers' + ); } - function showAfterEngineSelection () { + function showAfterEngineSelection() + { if ($this->SoapEngine->name_servers) { - //printf (" Available name servers: %s",$this->SoapEngine->name_servers); + //printf(" Available name servers: %s", $this->SoapEngine->name_servers); } } - function listRecords() { + function listRecords() + { $this->showSeachForm(); // Filter - $filter=array('name' => $this->filters['name'], - 'info' => $this->filters['info'], - 'customer' => intval($this->filters['customer']), - 'reseller' => intval($this->filters['reseller']) - ); + $filter = array( + 'name' => $this->filters['name'], + 'info' => $this->filters['info'], + 'customer' => intval($this->filters['customer']), + 'reseller' => intval($this->filters['reseller']) + ); // Range - $range=array('start' => intval($this->next), - 'count' => intval($this->maxrowsperpage) - ); + $range = array( + 'start' => intval($this->next), + 'count' => intval($this->maxrowsperpage) + ); // Order if (!$this->sorting['sortBy']) $this->sorting['sortBy'] = 'changeDate'; if (!$this->sorting['sortOrder']) $this->sorting['sortOrder'] = 'DESC'; $orderBy = array('attribute' => $this->sorting['sortBy'], 'direction' => $this->sorting['sortOrder'] ); // Compose query - $Query=array('filter' => $filter, + $Query = array('filter' => $filter, 'orderBy' => $orderBy, 'range' => $range ); $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getZones'); - $result = $this->SoapEngine->soapclient->getZones($Query); + $result = $this->SoapEngine->soapclient->getZones($Query); if ($this->checkLogSoapError($result, true)) { return false; } else { - $this->rows = $result->total; if ($this->rows && $_REQUEST['action'] != 'PerformActions' && $_REQUEST['action'] != 'Delete') { $this->showActionsForm(); } - print " -
$this->rows records found
-

- - - - - - - - - - - - - - - - "; + print <<< END +
$this->rows records found
+

+

IdOwnerZoneAdministratorInfoSerialDefault TTLChange dateActions
+ + + + + + + + + + + + + + +END; if (!$this->next) $this->next=0; - if ($this->rows > $this->maxrowsperpage) { + if ($this->rows > $this->maxrowsperpage) { $maxrows = $this->maxrowsperpage + $this->next; if ($maxrows > $this->rows) $maxrows = $this->maxrowsperpage; } else { - $maxrows=$this->rows; + $maxrows = $this->rows; } $i=0; if ($this->rows) { - while ($i < $maxrows) { - + while ($i < $maxrows) { if (!$result->zones[$i]) break; $zone = $result->zones[$i]; - $index=$this->next+$i+1; + $index = $this->next+$i+1; $_url = $this->url.sprintf("&service=%s&action=Delete&name_filter=%s", urlencode($this->SoapEngine->service), urlencode($zone->name) ); - if ($this->adminonly) $_url.= sprintf ("&reseller_filter=%s",$zone->reseller); + if ($this->adminonly) $_url.= sprintf("&reseller_filter=%s", $zone->reseller); if ($_REQUEST['action'] == 'Delete' && $_REQUEST['name_filter'] == $zone->name) { $_url .= "&confirm=1"; $actionText = "Confirm"; } else { $actionText = "Delete"; } - $zone_url=sprintf('%s&service=%s&name_filter=%s', + $zone_url = sprintf('%s&service=%s&name_filter=%s', $this->url, $this->SoapEngine->service, $zone->name ); $records_url = $this->url.sprintf("&service=dns_records@%s&zone_filter=%s", urlencode($this->SoapEngine->soapEngine), urlencode($zone->name) ); - if ($this->adminonly) $zone_url .= sprintf("&reseller_filter=%s",$zone->reseller); - if ($this->adminonly) $records_url .= sprintf("&reseller_filter=%s",$zone->reseller); + if ($this->adminonly) $zone_url .= sprintf("&reseller_filter=%s", $zone->reseller); + if ($this->adminonly) $records_url .= sprintf("&reseller_filter=%s", $zone->reseller); $customer_url = $this->url.sprintf("&service=customers@%s&customer_filter=%s", urlencode($this->SoapEngine->customer_engine), urlencode($zone->customer) ); sort($zone->nameservers); $ns_text=''; foreach ($zone->nameservers as $ns) { $ns_text.= $ns." "; } - printf(" - - - - - - - - - - - - ", - $index, - $customer_url, - $zone->customer, - $zone->reseller, - $zone_url, - $zone->name, - $zone->email, - $zone->info, - $records_url, - $zone->serial, - $zone->ttl, - $zone->changeDate, - $_url, - $actionText + printf( + " + + + + + + + + + + + + + ", + $index, + $customer_url, + $zone->customer, + $zone->reseller, + $zone_url, + $zone->name, + $zone->email, + $zone->info, + $records_url, + $zone->serial, + $zone->ttl, + $zone->changeDate, + $_url, + $actionText ); - printf(" - - "); + print ""; $i++; - } - } print "
IdOwnerZoneAdministratorInfoSerialDefault TTLChange dateActions
%s%s.%s%s%s%sRecords%s%s%s%s
%s%s.%s%s%s%sRecords%s%s%s%s
"; if ($this->rows == 1) { $this->showRecord($zone); } else { $this->showPagination($maxrows); } return true; } } - function deleteRecord($dictionary=array()) { + function deleteRecord($dictionary = array()) + { if (!$dictionary['confirm'] && !$_REQUEST['confirm']) { print "

Please press on Confirm to confirm the delete. "; return true; } if (!strlen($this->filters['name'])) { print "

Error: missing Dns zone name "; return false; } - $name=$this->filters['name']; + $name = $this->filters['name']; - $function=array('commit' => array('name' => 'deleteZone', - 'parameters' => array($name), - 'logs' => array('success' => sprintf('Dns zone %s has been deleted',$this->filters['name']) - ) - ) - ); + $function = array( + 'commit' => array( + 'name' => 'deleteZone', + 'parameters' => array($name), + 'logs' => array( + 'success' => sprintf('Dns zone %s has been deleted', $this->filters['name']) + ) + ) + ); unset($this->filters); - $result = $this->SoapEngine->execute($function,$this->html); + $result = $this->SoapEngine->execute($function, $this->html); if ($this->checkLogSoapError($result, true)) { return false; } else { return true; } - } - function showAddForm() { + function showAddForm() + { if ($this->selectionActive) return; - printf ("

",$_SERVER['PHP_SELF']); - print " -
- "; + printf( + "", + $_SERVER['PHP_SELF'] + ); + print "
"; - print " - - "; + print ""; $this->showCustomerTextBox(); - printf ("
DNS zone
",$_REQUEST['name']); + printf( + " +
+
+ DNS zone + +
+ ", + $_REQUEST['name'] + ); $this->printHiddenFormElements(); - printf (" Import DNS zones from file: - -
-
-
- -
- - Select file - Change - - Remove - -
+ print <<< END +Import DNS zones from file: + +
+
+
+
- " - ); + + Select file + Change + + Remove + +
+
+END; print "
"; } - function addRecord($dictionary=array()) { + function addRecord($dictionary = array()) + { $name = trim($_REQUEST['name']); $info = trim($_REQUEST['info']); $name_servers = trim($_REQUEST['name_servers']); if ($_FILES['import_file']['tmp_name']) { - $content=fread(fopen($_FILES['import_file']['tmp_name'], "r"), $_FILES['import_file']['size']); + $content = fread(fopen($_FILES['import_file']['tmp_name'], "r"), $_FILES['import_file']['size']); //print_r($content); - if (!$imported_data=json_decode($content, true)) { - printf ("

Error: reading imported data. "); + if (!$imported_data = json_decode($content, true)) { + printf("

Error: reading imported data. "); return false; } //print_r($imported_data); if (!in_array('dns_zones', array_keys($imported_data))) { - printf ("

Error: Missing zones in imported data. "); + printf("

Error: Missing zones in imported data. "); return false; } if (!in_array('dns_records', array_keys($imported_data))) { return false; - printf ("

Error: Missing records in imported data. "); + printf("

Error: Missing records in imported data. "); } - foreach($imported_data['customers'] as $customer) { + foreach ($imported_data['customers'] as $customer) { // Insert credetials $this->SoapEngine->soapclientCustomers->addHeader($this->SoapEngine->SoapAuth); $customer['credit'] = floatval($customer['credit']); $customer['balance'] = floatval($customer['balance']); // Call function $this->log_action('addAccount'); $result = $this->SoapEngine->soapclientCustomers->addAccount($customer); if ((new PEAR)->isError($result)) { $error_msg = $result->getMessage(); $error_fault= $result->getFault(); $error_code = $result->getCode(); if ($error_fault->detail->exception->errorcode == 5001) { $result = $this->SoapEngine->soapclientCustomers->updateCustomer($customer); if (!$this->checkLogSoapError($result, true, true)) { - printf('

Customer %s has been updated',$customer['id']); + printf('

Customer %s has been updated', $customer['id']); } } else { - $log=sprintf("SOAP request error from %s: %s (%s): %s",$this->SoapEngine->SOAPurl,$error_msg, $error_fault->detail->exception->errorcode,$error_fault->detail->exception->errorstring); + $log = sprintf("SOAP request error from %s: %s (%s): %s", $this->SoapEngine->SOAPurl, $error_msg, $error_fault->detail->exception->errorcode, $error_fault->detail->exception->errorstring); syslog(LOG_NOTICE, $log); - printf ("

Error: $log"); + printf("

Error: $log"); } } else { - printf('

Customer %s has been added',$customer['id']); + printf('

Customer %s has been added', $customer['id']); } - } $name_servers = array(); - foreach($imported_data['dns_zones'] as $zone) { + foreach ($imported_data['dns_zones'] as $zone) { flush(); $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('addZone'); $result = $this->SoapEngine->soapclient->addZone($zone); $name_servers[$zone['name']] = $zone['nameservers']; if ((new PEAR)->isError($result)) { $error_msg = $result->getMessage(); $error_fault= $result->getFault(); $error_code = $result->getCode(); if ($error_fault->detail->exception->errorcode == 7001) { $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('updateZone'); $result = $this->SoapEngine->soapclient->updateZone($zone); if (!$this->checkLogSoapError($result, true, true)) { - printf('

Zone %s has been updated',$zone['name']); - } + printf('

Zone %s has been updated', $zone['name']); + } } else { - $log=sprintf("SOAP request error from %s: %s (%s): %s",$this->SoapEngine->SOAPurl,$error_msg, $error_fault->detail->exception->errorcode,$error_fault->detail->exception->errorstring); + $log = sprintf("SOAP request error from %s: %s (%s): %s", $this->SoapEngine->SOAPurl, $error_msg, $error_fault->detail->exception->errorcode, $error_fault->detail->exception->errorstring); syslog(LOG_NOTICE, $log); - printf ("

Error: $log"); - + printf("

Error: $log"); } } else { - printf('

Zone %s has been added',$zone['name']); + printf('

Zone %s has been added', $zone['name']); } - } $added = 0; $updated = 0; - foreach($imported_data['dns_records'] as $record) { + foreach ($imported_data['dns_records'] as $record) { flush(); if (in_array($record['name'], $name_servers[$record['zone']]) && $record['type'] == "A") { continue; } $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('addRecord'); $result = $this->SoapEngine->soapclient->addRecord($record); if ((new PEAR)->isError($result)) { $error_msg = $result->getMessage(); $error_fault= $result->getFault(); $error_code = $result->getCode(); if ($error_fault->detail->exception->errorcode == 7003) { $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('updateRecord'); $result = $this->SoapEngine->soapclient->updateRecord($record); if (!$this->checkLogSoapError($result, true, true)) { $added += 1; } } else { - $log=sprintf("SOAP request error from %s: %s (%s): %s",$this->SoapEngine->SOAPurl,$error_msg, $error_fault->detail->exception->errorcode,$error_fault->detail->exception->errorstring); + $log = sprintf( + "SOAP request error from %s: %s (%s): %s", + $this->SoapEngine->SOAPurl, + $error_msg, + $error_fault->detail->exception->errorcode, + $error_fault->detail->exception->errorstring + ); syslog(LOG_NOTICE, $log); - printf ("

Error: $log"); + printf("

Error: $log"); } } else { - $added += 1; + $added += 1; } } - printf('

%d DNS records added and %d updated',$added, $updated); + printf('

%d DNS records added and %d updated', $added, $updated); return true; - - } else { if (isset($this->SoapEngine->allow_none_local_dns_zones)) { $allow_none_local_dns_zones = $this->SoapEngine->allow_none_local_dns_zones; } else { $allow_none_local_dns_zones = false; } if (!strlen($name)) { - printf ("

Error: Missing zone name.

"); + printf("

Error: Missing zone name.

"); return false; } $lookup1 = dns_get_record($name); //dprint_r($lookup1); - $ns_array1=explode(" ",trim($this->SoapEngine->name_servers)); + $ns_array1=explode(" ", trim($this->SoapEngine->name_servers)); - if (empty($lookup1) || $allow_none_local_dns_zones){ + if (empty($lookup1) || $allow_none_local_dns_zones) { $valid = 1; } else { $valid = 0; - foreach($lookup1 as $lrecord){ + foreach ($lookup1 as $lrecord) { if ($lrecord['type'] == 'NS') { - if(in_array($lrecord['target'],$ns_array1)){ + if (in_array($lrecord['target'], $ns_array1)) { $valid = 1 ; } } } } - if ($valid==0){ - printf ("

Error: DNS zone already exists on other server. Please contact our support if you plan to transfer this DNS zone to this system.

"); + if ($valid==0) { + printf("

Error: DNS zone already exists on other server. Please contact our support if you plan to transfer this DNS zone to this system.

"); return false; } if (is_numeric($prefix)) { - printf ("

Error: Numeric zone names are not allowed. Use ENUM port instead. "); + printf("

Error: Numeric zone names are not allowed. Use ENUM port instead. "); return false; } - list($customer,$reseller)=$this->customerFromLogin($dictionary); + list($customer, $reseller)=$this->customerFromLogin($dictionary); if (!trim($_REQUEST['ttl'])) { $ttl=3600; } else { - $ttl=intval(trim($_REQUEST['ttl'])); + $ttl = intval(trim($_REQUEST['ttl'])); } - if ($name_servers) { - $ns_array=explode(" ",trim($name_servers)); - } else if ($this->login_credentials['login_type'] != 'admin' && $this->SoapEngine->name_servers){ - $ns_array=explode(" ",trim($this->SoapEngine->name_servers)); + if ($name_servers) { + $ns_array = explode(" ", trim($name_servers)); + } elseif ($this->login_credentials['login_type'] != 'admin' && $this->SoapEngine->name_servers) { + $ns_array = explode(" ", trim($this->SoapEngine->name_servers)); } else { - $ns_array=array(); + $ns_array = array(); } - $zone=array( + $zone = array( 'name' => $name, 'ttl' => $ttl, 'info' => $info, 'customer' => intval($customer), 'reseller' => intval($reseller), 'nameservers' => $ns_array ); - $function=array('commit' => array('name' => 'addZone', + $function = array('commit' => array('name' => 'addZone', 'parameters' => array($zone), - 'logs' => array('success' => sprintf('DNS zone %s has been added',$name))) + 'logs' => array('success' => sprintf('DNS zone %s has been added', $name))) ); - $result = $this->SoapEngine->execute($function,$this->html); + $result = $this->SoapEngine->execute($function, $this->html); dprint_r($result); - if ($this->checkLogSoapError($result, true)) { + if ($this->checkLogSoapError($result, true)) { return false; } else { return true; } } } - function showSeachFormCustom() { - printf ("

DNS zone
",$this->filters['name']); - printf ("
Info
",$this->filters['info']); + function showSeachFormCustom() + { + printf( + " +
+ DNS zone + +
+ ", + $this->filters['name'] + ); + printf( + " +
+ Info + +
+ ", + $this->filters['info'] + ); } - function showRecord($zone) { - - print ""; - print " - + function showRecord($zone) + { + print <<< END +
+
- "; - printf ("",$_SERVER['PHP_SELF']); - print ""; +
+END; + printf("", $_SERVER['PHP_SELF']); - print " - "; + print <<< END + "; + + + +END; - printf ("",$zone->name); + printf("", $zone->name); if ($this->adminonly) { - foreach (array_keys($this->FieldsAdminOnly) as $item) { if ($item == 'nameservers') { foreach ($zone->$item as $_item) { $nameservers.=$_item."\n"; } - $item_value=$nameservers; + $item_value = $nameservers; } else { - $item_value=$zone->$item; + $item_value = $zone->$item; } if ($this->FieldsAdminOnly[$item]['name']) { - $item_name=$this->FieldsAdminOnly[$item]['name']; + $item_name = $this->FieldsAdminOnly[$item]['name']; } else { - $item_name=ucfirst($item); + $item_name = ucfirst($item); } if ($this->FieldsAdminOnly[$item]['type'] == 'text') { - printf (" - - - - ", - $item_name, - $item, - $item_value, - $this->FieldsAdminOnly[$item]['help'] + printf( + " + + + + + + ", + $item_name, + $item, + $item_value, + $this->FieldsAdminOnly[$item]['help'] ); } else { - printf (" - - - - ", - $item_name, - $item, - $item_value, - $this->FieldsAdminOnly[$item]['help'] + printf( + " + + + + + + ", + $item_name, + $item, + $item_value, + $this->FieldsAdminOnly[$item]['help'] ); } } } foreach (array_keys($this->Fields) as $item) { if ($this->Fields[$item]['name']) { - $item_name=$this->Fields[$item]['name']; + $item_name = $this->Fields[$item]['name']; } else { - $item_name=ucfirst($item); + $item_name = ucfirst($item); } if ($item == 'nameservers') { foreach ($zone->$item as $_item) { $nameservers.=$_item."\n"; } - $item_value=$nameservers; + $item_value = $nameservers; } else { - $item_value=$zone->$item; + $item_value = $zone->$item; } if ($this->Fields[$item]['type'] == 'text') { - printf (" - - - - ", - $item_name, - $item, - $item_value, - $this->Fields[$item]['help'] + printf( + " + + + + + + ", + $item_name, + $item, + $item_value, + $this->Fields[$item]['help'] ); - } else if ($this->Fields[$item]['readonly']) { - printf (" - - - - ", - $item_name, - $item_value, - $this->Fields[$item]['help'] + } elseif ($this->Fields[$item]['readonly']) { + printf( + " + + + + + + ", + $item_name, + $item_value, + $this->Fields[$item]['help'] ); } else { - printf (" - - - - ", - $item_name, - $item, - $item_value, - $this->Fields[$item]['help'] + printf( + " + + + + + + ", + $item_name, + $item, + $item_value, + $this->Fields[$item]['help'] ); } } - printf ("",$zone->id->tld); - printf ("",$zone->id->prefix); + printf("", $zone->id->tld); + printf("", $zone->id->prefix); $this->printFiltersToForm(); $this->printHiddenFormElements(); print ""; print "
-
DNS zone%s
DNS zone%s
%s%s
%s%s
%s%s
%s%s
%s%s
%s%s
%s%s%s
%s%s%s
%s%s
%s%s
"; } - function updateRecord () { - + function updateRecord() + { if (!$_REQUEST['name_filter']) return; - //dprintf ("

Updating zone %s...",$_REQUEST['name_filter']); + //dprintf("

Updating zone %s...", $_REQUEST['name_filter']); - $filter=array('name' => $_REQUEST['name_filter']); + $filter = array('name' => $_REQUEST['name_filter']); if (!$zone = $this->getRecord($filter)) { return false; } - $zone_old=$zone; + $zone_old = $zone; foreach (array_keys($this->Fields) as $item) { - $var_name=$item.'_form'; - //printf ("
%s=%s",$var_name,$_REQUEST[$var_name]); + $var_name = $item.'_form'; + //printf("
%s=%s", $var_name, $_REQUEST[$var_name]); if ($this->Fields[$item]['type'] == 'integer') { $zone->$item = intval($_REQUEST[$var_name]); - } else if ($item == 'nameservers') { - $_txt=trim($_REQUEST[$var_name]); + } elseif ($item == 'nameservers') { + $_txt = trim($_REQUEST[$var_name]); if (!strlen($_txt)) { unset($zone->$item); } else { - $_nameservers=array(); - $_lines=explode("\n",$_txt); + $_nameservers = array(); + $_lines = explode("\n", $_txt); foreach ($_lines as $_line) { - $_ns=trim($_line); - $_nameservers[]=$_ns; + $_ns = trim($_line); + $_nameservers[] = $_ns; } - $zone->$item=$_nameservers; + $zone->$item = $_nameservers; } } else { $zone->$item = trim($_REQUEST[$var_name]); } } if ($this->adminonly) { foreach (array_keys($this->FieldsAdminOnly) as $item) { - $var_name=$item.'_form'; + $var_name = $item.'_form'; if ($this->FieldsAdminOnly[$item]['type'] == 'integer') { $zone->$item = intval($_REQUEST[$var_name]); } else { $zone->$item = trim($_REQUEST[$var_name]); } } } - $function=array('commit' => array('name' => 'updateZone', + $function = array('commit' => array('name' => 'updateZone', 'parameters' => array($zone), - 'logs' => array('success' => sprintf('DNS zone %s has been updated',$filter['name']))) + 'logs' => array('success' => sprintf('DNS zone %s has been updated', $filter['name']))) ); - $result = $this->SoapEngine->execute($function,$this->html); + $result = $this->SoapEngine->execute($function, $this->html); dprint_r($result); if ($this->checkLogSoapError($result, true)) { return false; } else { return true; } - } function getRecord($zone) { // Filter if (!$zone['name']) { print "Error in getRecord(): Missing zone name"; return false; } - $filter=array('name' => $zone['name']); + $filter = array('name' => $zone['name']); // Range - $range=array('start' => 0, + $range = array('start' => 0, 'count' => 1 ); // Order $orderBy = array('attribute' => 'changeDate', 'direction' => 'DESC' ); // Compose query - $Query=array('filter' => $filter, + $Query = array('filter' => $filter, 'orderBy' => $orderBy, 'range' => $range ); $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getZones'); $result = $this->SoapEngine->soapclient->getZones($Query); if ($this->checkLogSoapError($result, true)) { return false; } else { - if ($result->zones[0]){ + if ($result->zones[0]) { return $result->zones[0]; } else { return false; } } } - function getRecordKeys() { - + function getRecordKeys() + { // Filter - $filter=array('name' => $this->filters['name'], - 'info' => $this->filters['info'], - 'customer' => intval($this->filters['customer']), - 'reseller' => intval($this->filters['reseller']) - ); + $filter = array( + 'name' => $this->filters['name'], + 'info' => $this->filters['info'], + 'customer' => intval($this->filters['customer']), + 'reseller' => intval($this->filters['reseller']) + ); // Range - $range=array('start' => 0, - 'count' => 200 - ); + $range = array( + 'start' => 0, + 'count' => 200 + ); // Order if (!$this->sorting['sortBy']) $this->sorting['sortBy'] = 'changeDate'; if (!$this->sorting['sortOrder']) $this->sorting['sortOrder'] = 'DESC'; - $orderBy = array('attribute' => $this->sorting['sortBy'], - 'direction' => $this->sorting['sortOrder'] - ); + $orderBy = array( + 'attribute' => $this->sorting['sortBy'], + 'direction' => $this->sorting['sortOrder'] + ); // Compose query - $Query=array('filter' => $filter, - 'orderBy' => $orderBy, - 'range' => $range - ); + $Query = array( + 'filter' => $filter, + 'orderBy' => $orderBy, + 'range' => $range + ); // Insert credetials $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getZones'); // Call function $result = $this->SoapEngine->soapclient->getZones($Query); if ($this->checkLogSoapError($result, true)) { return false; } else { foreach ($result->zones as $zone) { - $this->selectionKeys[]=array('name' => $zone->name); + $this->selectionKeys[] = array('name' => $zone->name); } return true; } } - function hide_html() { + function hide_html() + { if ($_REQUEST['action'] == 'PerformActions' && $_REQUEST['sub_action'] == 'export') { return true; } else { return false; } } } - diff --git a/library/NGNPro/Records/EnumMappings.php b/library/NGNPro/Records/EnumMappings.php index 4bca3e3..1ba6b31 100644 --- a/library/NGNPro/Records/EnumMappings.php +++ b/library/NGNPro/Records/EnumMappings.php @@ -1,1382 +1,1381 @@ 'Change date', 'number' => 'Number', 'tld' => 'TLD' ); var $ranges = array(); var $FieldsReadOnly = array( 'customer', 'reseller' ); var $Fields = array( 'owner' => array('type'=>'integer'), 'info' => array('type'=>'string') ); var $mapping_fields = array( 'id' => 'integer', 'type' => 'string', 'mapto' => 'string', 'priority' => 'integer', 'ttl' => 'integer' ); var $NAPTR_services = array( "sip" => array( "service" => "sip", "webname" => "SIP", "schemas" => array("sip:","sips:")), "mailto" => array( "service" => "mailto", "webname" => "Email", "schemas" => array("mailto:")), "web:http" => array( "service" => "web:http", "webname" => "WEB (http)", "schemas" => array("http://")), "web:https" => array( "service" => "web:https", "webname" => "WEB (https)", "schemas" => array("https://")), "x-skype:callto" => array( "service" => "x-skype:callto", "webname" => "Skype", "schemas" => array("callto:")), "h323" => array( "service" => "h323", "webname" => "H323", "schemas" => array("h323:")), "iax" => array( "service" => "iax", "webname" => "IAX", "schemas" => array("iax:")), "iax2" => array( "service" => "iax2", "webname" => "IAX2", "schemas" => array("iax2:")), "mms" => array( "service" => "mms", "webname" => "MMS", "schemas" => array("tel:","mailto:")), "sms" => array( "service" => "sms", "webname" => "SMS", "schemas" => array("tel:","mailto:")), "ems" => array( "service" => "ems", "webname" => "EMS", "schemas" => array("tel:","mailto:")), "im" => array( "service" => "im", "webname" => "IM", "schemas" => array("im:")), "npd:tel" => array( "service" => "npd+tel", "webname" => "Portability", "schemas" => array("tel:")), "void:mailto" => array( "service" => "void:mailto", "webname" => "VOID(mail)", "schemas" => array("mailto:")), "void:http" => array( "service" => "void:http", "webname" => "VOID(http)", "schemas" => array("http://")), "void:https" => array( "service" => "void:https", "webname" => "VOID(https)", "schemas" => array("https://")), "voice" => array( "service" => "voice", "webname" => "Voice", "schemas" => array("voice:","tel:")), "tel" => array( "service" => "tel", "webname" => "Tel", "schemas" => array("tel:")), "fax:tel" => array( "service" => "fax:tel", "webname" => "Fax", "schemas" => array("tel:")), "ifax:mailto" => array( "service" => "ifax:mailto", "webname" => "iFax", "schemas" => array("mailto:")), "pres" => array( "service" => "pres", "webname" => "Presence", "schemas" => array("pres:")), "ft:ftp" => array( "service" => "ft:ftp", "webname" => "FTP", "schemas" => array("ftp://")), "loc:http" => array( "service" => "loc:http", "webname" => "GeoLocation", "schemas" => array("http://")), "key:http" => array( "service" => "key:http", "webname" => "Public key", "schemas" => array("http://")), "key:https" => array( "service" => "key:https", "webname" => "Public key (HTTPS)", "schemas" => array("https://")) ); public function __construct($SoapEngine) { dprint("init EnumMappings"); if ($_REQUEST['range_filter']) { list($_prefix, $_tld_filter) = explode("@", $_REQUEST['range_filter']); if ($_prefix && !$_REQUEST['number_filter']) { $_number_filter = $_prefix.'%'; } else { $_number_filter = $_REQUEST['number_filter']; } } else { $_number_filter = $_REQUEST['number_filter']; $_tld_filter = trim($_REQUEST['tld_filter']); } $_number_filter = ltrim($_number_filter, '+'); $this->filters = array( 'number' => ltrim($_number_filter, '+'), 'tld' => $_tld_filter, 'range' => trim($_REQUEST['range_filter']), 'type' => trim($_REQUEST['type_filter']), 'mapto' => trim($_REQUEST['mapto_filter']), 'owner' => trim($_REQUEST['owner_filter']) ); parent::__construct($SoapEngine); $this->getAllowedDomains(); } function listRecords() { $this->showSeachForm(); $filter = array( 'number' => $this->filters['number'], 'tld' => $this->filters['tld'], 'type' => $this->filters['type'], 'mapto' => $this->filters['mapto'], 'owner' => intval($this->filters['owner']), 'customer' => intval($this->filters['customer']), 'reseller' => intval($this->filters['reseller']) ); // Range - $range = array('start' => intval($this->next), - 'count' => intval($this->maxrowsperpage) - ); + $range = array( + 'start' => intval($this->next), + 'count' => intval($this->maxrowsperpage) + ); // Order if (!$this->sorting['sortBy']) $this->sorting['sortBy'] = 'changeDate'; if (!$this->sorting['sortOrder']) $this->sorting['sortOrder'] = 'DESC'; $orderBy = array('attribute' => $this->sorting['sortBy'], 'direction' => $this->sorting['sortOrder'] ); // Compose query $Query = array('filter' => $filter, 'orderBy' => $orderBy, 'range' => $range ); // Insert credetials $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getNumbers'); // Call function $result = $this->SoapEngine->soapclient->getNumbers($Query); if ($this->checkLogSoapError($result, true)) { return false; } else { $this->rows = $result->total; if ($this->rows && $_REQUEST['action'] != 'PerformActions' && $_REQUEST['action'] != 'Delete') { $this->showActionsForm(); } print "

$this->rows records found

"; if (!$this->next) $this->next=0; if ($this->rows > $this->maxrowsperpage) { $maxrows = $this->maxrowsperpage + $this->next; if ($maxrows > $this->rows) $maxrows = $this->maxrowsperpage; } else { $maxrows = $this->rows; } $i=0; if ($this->rows) { while ($i < $maxrows) { if (!$result->numbers[$i]) break; $number = $result->numbers[$i]; $index = $this->next+$i+1; $j=1; $base_url_data = array( 'service' => $this->SoapEngine->service, 'number_filter' => $number->id->number, 'tld_filter' => $number->id->tld ); foreach ($number->mappings as $_mapping) { unset($sip_engine); foreach (array_keys($this->login_credentials['reseller_filters']) as $_res) { if ($_res == $number->reseller) { if ($this->login_credentials['reseller_filters'][$_res]['sip_engine']) { $sip_engine = $this->login_credentials['reseller_filters'][$_res]['sip_engine']; break; } } } if (!$sip_engine) { if ($this->login_credentials['reseller_filters']['default']['sip_engine']) { $sip_engine = $this->login_credentials['reseller_filters']['default']['sip_engine']; } else { $sip_engine = $this->SoapEngine->sip_engine; } } if (preg_match("/^sip:(.*)$/", $_mapping->mapto, $m) && $this->sip_settings_page) { $mapto_url_data = array( 'account' => $m[1], 'reseller' => $number->reseller, 'sip_engine' => $sip_engine ); if ($this->adminonly) { $mapto_url_data['adminonly'] = $this->adminonly; } foreach (array_keys($this->SoapEngine->extraFormElements) as $element) { if (!strlen($this->SoapEngine->extraFormElements[$element])) continue; $mapto_url_data[$element] = $this->SoapEngine->extraFormElements[$element]; } $mapto = sprintf( " sip:%s", $this->sip_settings_page, http_build_query($mapto_url_data), $m[1] ); } else { $mapto = sprintf("%s", $_mapping->mapto); } $delete_url_data = array_merge( $base_url_data, array( 'action' => 'Delete', 'mapto_filter' => $_mapping->mapto ) ); if ($_REQUEST['action'] == 'Delete' && $_REQUEST['number_filter'] == $number->id->number && $_REQUEST['tld_filter'] == $number->id->tld && $_REQUEST['mapto_filter'] == $_mapping->mapto ) { $delete_url_data['confirm'] = 1; $actionText = "Confirm"; } else { $actionText = "Delete"; } $_url = sprintf( "%s&%s", $this->url, http_build_query($delete_url_data) ); if ($j==1) { $number_url_data = $base_url_data; if ($this->adminonly) $_number_url_data['reseller_filter'] = $number->reseller; $_number_url = sprintf( "%s&%s", $this->url, http_build_query($number_url_data) ); $_customer_url = sprintf( 's&%s', $this->url, http_build_query( array( 'service' => sprintf('customers@%s', $this->SoapEngine->customer_engine), 'customer_filter' => $number->customer ) ) ); if ($number->owner) { $_owner_url = sprintf( '%s', $this->url, http_build_query( array( 'service' => sprintf('customers@%s', $this->SoapEngine->customer_engine), 'customer_filter' => $number->owner ) ), $number->owner ); } else { $_owner_url=''; } printf( " ", $index, $_customer_url, $number->customer, $number->reseller, $_number_url, $number->id->number, $number->id->tld, $number->info, $_owner_url, ucfirst($_mapping->type), $_mapping->id, $mapto, $_mapping->ttl, $number->changeDate, $_url, $actionText ); } else { printf( " ", ucfirst($_mapping->type), $_mapping->id, $mapto, $_mapping->ttl, $number->changeDate, $_url, $actionText ); } $j++; } if (!is_array($number->mappings) || !count($number->mappings)) { $delete_url_data = array_merge( $base_url_data, array( 'action' => 'Delete', 'mapto_filter' => $_mapping->mapto ) ); if ($_REQUEST['action'] == 'Delete' && $_REQUEST['number_filter'] == $number->id->number && $_REQUEST['tld_filter'] == $number->id->tld && $_REQUEST['mapto_filter'] == $_mapping->mapto ) { $delete_url_data['confirm'] = 1; $actionText = "Confirm"; } else { $actionText = "Delete"; } $_url = sprintf( "%s&%s", $this->url, http_build_query($delete_url_data) ); $number_url_data = $base_url_data; if ($this->adminonly) $_number_url_data['reseller_filter'] = $number->reseller; $_number_url = sprintf( "%s&%s", $this->url, http_build_query($number_url_data) ); $_customer_url = sprintf( 's&%s', $this->url, http_build_query( array( 'service' => sprintf('customers@%s', $this->SoapEngine->customer_engine), 'customer_filter' => $number->customer ) ) ); if ($number->owner) { $_owner_url = sprintf( '%s', $this->url, http_build_query( array( 'service' => sprintf('customers@%s', $this->SoapEngine->customer_engine), 'customer_filter' => $number->owner ) ), $number->owner ); } else { $_owner_url=''; } printf( " ", $index, $_customer_url, $number->customer, $number->reseller, $_number_url, $number->id->number, $number->id->tld, $number->info, $_owner_url, $number->changeDate, $_url, $actionText ); } printf(" "); $i++; } } print "
Range Owner Phone number TLD Info Owner Type Id Map to TTL Change date Actions
%s %s.%s +%s %s %s %s %s %s %s %s %s %s
%s %s %s %s %s %s
%s %s.%s +%s %s %s %s %s %s
"; if ($this->rows == 1) { $this->showRecord($number); } else { $this->showPagination($maxrows); } return true; } } function getLastNumber() { // Filter $filter = array('number' => '' ); // Range $range = array('start' => 0, 'count' => 1 ); // Order if (!$this->sorting['sortBy']) $this->sorting['sortBy'] = 'changeDate'; if (!$this->sorting['sortOrder']) $this->sorting['sortOrder'] = 'DESC'; $orderBy = array('attribute' => $this->sorting['sortBy'], 'direction' => $this->sorting['sortOrder'] ); // Compose query $Query = array('filter' => $filter, 'orderBy' => $orderBy, 'range' => $range ); // Insert credetials $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getNumbers'); // Call function $result = $this->SoapEngine->soapclient->getNumbers($Query); if ($this->checkLogSoapError($result, true)) { return false; } else { if ($result->total) { $number = array('number' => $result->numbers[0]->id->number, 'tld' => $result->numbers[0]->id->tld, 'mappings' => $result->numbers[0]->mappings ); return $number; } } return false; } function showSeachFormCustom() { /* print " "; */ printf("

Number
", $_REQUEST['number_filter']); printf("
Map to"); print " "; printf("
", $this->filters['mapto']); printf("
Owner
", $this->filters['owner']); } function deleteRecord($dictionary = array()) { if (!$dictionary['confirm'] && !$_REQUEST['confirm']) { print "

Please press on Confirm to confirm the delete. "; return true; } if ($dictionary['number']) { $number = $dictionary['number']; } else { $number = $this->filters['number']; } if ($dictionary['tld']) { $tld = $dictionary['tld']; } else { $tld = $this->filters['tld']; } if ($dictionary['mapto']) { $mapto = $dictionary['mapto']; } else { $mapto = $this->filters['mapto']; } if (!strlen($number) || !strlen($tld)) { print "

Error: missing ENUM number or TLD "; return false; } $enum_id = array('number' => $number, 'tld' => $tld ); $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getNumber'); $result = $this->SoapEngine->soapclient->getNumber($enum_id); if (!(new PEAR)->isError($result)) { // the number exists and we make an update $result_new = $result; if (count($result->mappings) > 1) { foreach ($result->mappings as $_mapping) { if ($_mapping->mapto != $mapto) { $mappings_new[] = array('type' => $_mapping->type, 'mapto' => $_mapping->mapto, 'ttl' => $_mapping->ttl, 'priority' => $_mapping->priority, 'id' => $_mapping->id ); } } if (!is_array($mappings_new)) $mappings_new = array(); $result_new->mappings = $mappings_new; $function = array('commit' => array('name' => 'updateNumber', 'parameters' => array($result_new), 'logs' => array('success' => sprintf('ENUM mapping %s has been deleted',$mapto))) ); $result = $this->SoapEngine->execute($function, $this->html); if ($this->checkLogSoapError($result, true)) { return false; } else { return true; } } else { $function = array('commit' => array('name' => 'deleteNumber', 'parameters' => array($enum_id), 'logs' => array('success' => sprintf('ENUM number +%s under %s has been deleted',$number, $tld))), ); $result = $this->SoapEngine->execute($function, $this->html); if ($this->checkLogSoapError($result, true)) { return false; } else { return true; } } unset($this->filters); } else { return false; } } function showAddForm() { if ($this->selectionActive) return; //if ($this->adminonly && !$this->filters['reseller']) return; if (!count($this->ranges)) { //print "

You must create at least one ENUM range before adding ENUM numbers"; return false; } printf("

", $_SERVER['PHP_SELF']); print "
"; if ($this->adminonly) { printf(" ", $this->filters['reseller']); } print "
"; printf(" Number"); print ""; if ($_REQUEST['number']) { printf("", $_REQUEST['number']); } elseif ($_number = $this->getCustomerProperty('enum_numbers_last_number')) { $_prefix = $_range['prefix']; preg_match("/^$_prefix(.*)/", $_number, $m); printf("", $m[1]); } else { printf(""); } print "
"; printf("Map to"); print " "; if ($_REQUEST['type']) { $selected_naptr_service[$_REQUEST['type']]='selected'; } elseif ($_type = $this->getCustomerProperty('enum_numbers_last_type')) { $selected_naptr_service[$_type]='selected'; } printf(" ", $_REQUEST['mapto']); print "
"; print "TTL"; print ""; if ($_REQUEST['ttl']) { printf("
", $_REQUEST['ttl']); } elseif ($_ttl = $this->getCustomerProperty('enum_numbers_last_ttl')) { printf("
", $_ttl); } else { printf(""); } printf("
Owner
", $_REQUEST['owner']); printf("
Info
", $_REQUEST['info']); $this->printHiddenFormElements(); print "
"; } function getAllowedDomains() { // Filter $filter = array('prefix' => '', 'customer' => intval($this->filters['customer']), 'reseller' => intval($this->filters['reseller']) ); // Range $range = array('start' => 0, 'count' => 200 ); // Order $orderBy = array('attribute' => 'prefix', 'direction' => 'ASC' ); // Compose query $Query = array('filter' => $filter, 'orderBy' => $orderBy, 'range' => $range ); $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getRanges'); $result = $this->SoapEngine->soapclient->getRanges($Query); if ($this->checkLogSoapError($result, true)) { return false; } else { foreach ($result->ranges as $range) { $this->ranges[] = array('prefix' => $range->id->prefix, 'tld' => $range->id->tld, 'minDigits' => $range->minDigits, 'maxDigits' => $range->maxDigits ); if (in_array($range->id->tld, $this->allowedDomains)) continue; $this->allowedDomains[] = $range->id->tld; $seen[$range->id->tld]++; } if (!$seen[$this->SoapEngine->default_enum_tld]) { $this->allowedDomains[] = $this->SoapEngine->default_enum_tld; } } } function addRecord($dictionary = array()) { $prefix=''; if ($dictionary['range']) { list($prefix, $tld)=explode('@', trim($dictionary['range'])); $this->skipSaveProperties = true; } elseif ($dictionary['tld']) { $tld = $dictionary['tld']; } elseif ($_REQUEST['range']) { list($prefix, $tld)=explode('@', trim($_REQUEST['range'])); } else { $tld = trim($_REQUEST['tld']); } if ($dictionary['number']) { $number = $dictionary['number']; } else { $number = trim($_REQUEST['number']); } $number = $prefix.$number; if (!strlen($tld)) { $tld = $this->SoapEngine->default_enum_tld; } if (!strlen($tld) || !strlen($number) || !is_numeric($number)) { printf("

Error: Missing TLD or number. "); return false; } if ($dictionary['ttl']) { $ttl = intval($dictionary['ttl']); } else { $ttl = intval(trim($_REQUEST['ttl'])); } if (!$ttl) $ttl=3600; if ($dictionary['priority']) { $priority = intval($dictionary['priority']); } else { $priority = intval(trim($_REQUEST['priority'])); } if ($dictionary['owner']) { $owner = intval($dictionary['owner']); } else { $owner = intval(trim($_REQUEST['owner'])); } if ($dictionary['info']) { $info = $dictionary['info']; } else { $info = trim($_REQUEST['info']); } if (!$priority) $priority=5; $enum_id = array('number' => $number, 'tld' => $tld); if ($dictionary['mapto']) { $mapto = $dictionary['mapto']; } else { $mapto = trim($_REQUEST['mapto']); } if ($dictionary['type']) { $type = $dictionary['type']; } else { $type = trim($_REQUEST['type']); } if (preg_match("/^([a-z0-9]+:\/\/)(.*)$/i", $mapto, $m)) { $_scheme = $m[1]; $_value = $m[2]; } elseif (preg_match("/^([a-z0-9]+:)(.*)$/i", $mapto, $m)) { $_scheme = $m[1]; $_value = $m[2]; } else { $_scheme = ''; $_value = $mapto; } if (!$_value) { $lastNumber = $this->getLastNumber(); foreach($lastNumber['mappings'] as $_mapping) { if ($_mapping->type == trim($type)) { if (preg_match("/^(.*)@(.*)$/", $_mapping->mapto, $m)) { $_value = $number.'@'.$m[2]; break; } } } } if (!$_scheme || !in_array($_scheme, $this->NAPTR_services[trim($type)]['schemas'])) { $_scheme = $this->NAPTR_services[trim($type)]['schemas'][0]; } $mapto = $_scheme.$_value; $enum_number = array('id' => $enum_id, 'owner' => $owner, 'info' => $info, 'mappings' => array(array('type' => $type, 'mapto' => $mapto, 'ttl' => $ttl, 'priority' => $priority ) ) ); if (!$this->skipSaveProperties = true) { $_p = array( array('name' => 'enum_numbers_last_range', 'category' => 'web', 'value' => $_REQUEST['range'], 'permission' => 'customer' ), array('name' => 'enum_numbers_last_type', 'category' => 'web', 'value' => "$type", 'permission' => 'customer' ), array('name' => 'enum_numbers_last_number', 'category' => 'web', 'value' => "$number", 'permission' => 'customer' ), array('name' => 'enum_numbers_last_ttl', 'category' => 'web', 'value' => "$ttl", 'permission' => 'customer' ) ); $this->setCustomerProperties($_p); } $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getNumber'); $result = $this->SoapEngine->soapclient->getNumber($enum_id); if ((new PEAR)->isError($result)) { $error_msg = $result->getMessage(); $error_fault = $result->getFault(); $error_code = $result->getCode(); if ($error_fault->detail->exception->errorcode == "3002") { $function = array('commit' => array('name' => 'addNumber', 'parameters' => array($enum_number), 'logs' => array('success' => sprintf('ENUM number +%s under %s has been added',$number, $tld))) ); $result = $this->SoapEngine->execute($function, $this->html); if ($this->checkLogSoapError($result, true)) { return false; } else { return true; } } else { $log = sprintf("SOAP request error from %s: %s (%s): %s", $this->SoapEngine->SOAPurl, $error_msg, $error_fault->detail->exception->errorcode, $error_fault->detail->exception->errorstring); syslog(LOG_NOTICE, $log); return false; } } else { // the number exists and we make an update $result_new = $result; foreach ($result->mappings as $_mapping) { $mappings_new[] = array('type' => $_mapping->type, 'mapto' => $_mapping->mapto, 'ttl' => $_mapping->ttl, 'priority' => $_mapping->priority, 'id' => $_mapping->id ); if ($_mapping->mapto == $mapto) { printf("

Info: ENUM mapping %s for number %s already exists", $mapto, $number); return $result; } } $mappings_new[] = array('type' => trim($type), 'mapto' => $mapto, 'ttl' => intval(trim($_REQUEST['ttl'])), 'priority'=> intval(trim($_REQUEST['priority'])), ); // add mapping $result_new->mappings = $mappings_new; $function = array('commit' => array('name' => 'updateNumber', 'parameters' => array($result_new), 'logs' => array('success' => sprintf('ENUM number +%s under %s has been updated',$number, $tld))) ); $result = $this->SoapEngine->execute($function, $this->html); if ($this->checkLogSoapError($result, true)) { return false; } else { return true; } } } function getRecordKeys() { // Filter $filter = array('number' => $this->filters['number'], 'tld' => $this->filters['tld'], 'type' => $this->filters['type'], 'mapto' => $this->filters['mapto'], 'owner' => intval($this->filters['owner']), 'customer' => intval($this->filters['customer']), 'reseller' => intval($this->filters['reseller']) ); // Range $range = array('start' => 0, 'count' => 1000 ); // Order if (!$this->sorting['sortBy']) $this->sorting['sortBy'] = 'changeDate'; if (!$this->sorting['sortOrder']) $this->sorting['sortOrder'] = 'DESC'; $orderBy = array('attribute' => $this->sorting['sortBy'], 'direction' => $this->sorting['sortOrder'] ); // Compose query $Query = array('filter' => $filter, 'orderBy' => $orderBy, 'range' => $range ); // Insert credetials $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getNumberss'); // Call function $result = $this->SoapEngine->soapclient->getNumbers($Query); if ($this->checkLogSoapError($result, true)) { return false; } else { foreach ($result->numbers as $number) { $this->selectionKeys[] = array('number' => $number->id->number, 'tld' => $number->id->tld); } return true; } } function showRecord($number) { print ""; print ""; print ""; print ""; print ""; print "
"; print "

Number

"; print "
"; print "

Mappings

"; print "
"; print ""; printf("", $_SERVER['PHP_SELF']); print ""; printf("", $this->tel2enum($number->id->number, $number->id->tld)); foreach (array_keys($this->Fields) as $item) { if ($this->Fields[$item]['name']) { $item_name = $this->Fields[$item]['name']; } else { $item_name = ucfirst($item); } if ($this->Fields[$item]['type'] == 'text') { printf( " ", $item_name, $item, $number->$item ); } else { printf( " ", $item_name, $item, $number->$item ); } } printf("", $number->id->tld); printf("", $number->id->number); $this->printFiltersToForm(); $this->printHiddenFormElements(); print <<< END
DNS name%s
%s
%s
END; foreach ($number->mappings as $_mapping) { $j++; unset($selected_type); print ""; print ""; printf("", $_mapping->id, $_mapping->id); $selected_type[$_mapping->type]='selected'; printf(" "; printf( " ", $_mapping->mapto, $_mapping->ttl ); print ""; } $j++; print <<< END
Id Type Map to TTL
$j%d
END; } function getRecord($enumid) { $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getNumber'); $result = $this->SoapEngine->soapclient->getNumber($enumid); if ($this->checkLogSoapError($result, true)) { return false; } else { return $result; } } function updateRecord() { //print "

Updating number ..."; if (!$_REQUEST['number_filter'] || !$_REQUEST['tld_filter']) return; $enumid = array('number' => $_REQUEST['number_filter'], 'tld' => $_REQUEST['tld_filter'] ); if (!$number = $this->getRecord($enumid)) { return false; } $number_old = $number; $new_mappings = array(); /* foreach ($number->mappings as $_mapping) { foreach (array_keys($this->mapping_fields) as $field) { if ($this->mapping_fields[$field] == 'integer') { $new_mapping[$field] = intval($_mapping->$field); } else { $new_mapping[$field] = $_mapping->$field; } } $new_mappings[] = $new_mapping; } */ $j=0; while ($j< count($_REQUEST['mapping_type'])) { $mapto = $_REQUEST['mapping_mapto'][$j]; $type = $_REQUEST['mapping_type'][$j]; $id = $_REQUEST['mapping_id'][$j]; $ttl = intval($_REQUEST['mapping_ttl'][$j]); $priority = intval($_REQUEST['mapping_priority'][$j]); if (!$ttl) $ttl = $this->default_ttl; if (!$priority) $priority = $this->default_priority; if (strlen($mapto)) { if (preg_match("/^([a-z0-9]+:\/\/)(.*)$/i", $mapto, $m)) { $_scheme = $m[1]; $_value = $m[2]; } elseif (preg_match("/^([a-z0-9]+:)(.*)$/i", $mapto, $m)) { $_scheme = $m[1]; $_value = $m[2]; } else { $_scheme = ''; $_value = $mapto; } reset($this->NAPTR_services); if (!$_scheme || !in_array($_scheme, $this->NAPTR_services[trim($type)]['schemas'])) { $_scheme = $this->NAPTR_services[trim($type)]['schemas'][0]; } $mapto = $_scheme.$_value; $new_mappings[] = array( 'type' => $type, 'ttl' => $ttl, 'id' => intval($id), 'mapto' => $mapto, 'priority' => $priority ); } $j++; } $number->mappings = $new_mappings; if (!is_array($number->mappings)) $number->mappings = array(); foreach (array_keys($this->Fields) as $item) { $var_name = $item.'_form'; //printf("
%s=%s", $var_name, $_REQUEST[$var_name]); if ($this->Fields[$item]['type'] == 'integer') { $number->$item = intval($_REQUEST[$var_name]); } else { $number->$item = trim($_REQUEST[$var_name]); } } //print_r($number); $function = array('commit' => array('name' => 'updateNumber', 'parameters' => array($number), 'logs' => array('success' => sprintf('ENUM number +%s under %s has been updated',$enumid['number'], $enumid['tld']))) ); $result = $this->SoapEngine->execute($function, $this->html); dprint_r($result) ; if ($this->checkLogSoapError($result, true)) { return false; } else { return true; } } function showTextBeforeCustomerSelection() { print _("Range owner"); } - } -